import ExcelJS from 'exceljs'


/**
 * @param {string} path
 * @returns {Boolean}   paht中包括http:、https:、mailto:、tel:返回true
 */
export function isExternal(path) {
    return /^(https?:|mailto:|tel:)/.test(path)
}

// 假设你有一个表格数据的数组
//      name  会员表
//      header  ["Alice", 28, "Engineer"],
//     [["Bob", 22, "Designer"]]
// 导出
export function exportToExcel(name,header,data) {
    
    // 创建工作簿
    const workbook = new ExcelJS.Workbook();
    // 创建工作表
    const worksheet = workbook.addWorksheet('My Sheet');
    // 添加表头
    worksheet.addRow(header);
    // 添加数据
    data.forEach(item => worksheet.addRow(item));
    console.log('worksheet',worksheet);
    // 定义表格风格
    // worksheet.columns.forEach(column => {
    //   column.width = column.header.length < 12 ? 12 : column.header.length // 设定列宽
    // });

    worksheet.columns.map((column) => {
        // 列宽自适应
        let width = []
        column.values.map((value) => {
          if (!value) {
            width.push(10)
          } else if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {
            width.push(parseFloat(value.toString().length * 2.15))
          } else {
            width.push(parseFloat(value.toString().length * 1.15))
          }
        })
        column.width = Math.max(...width)
      })
  

    // 定义导出格式
    workbook.xlsx.writeBuffer().then(buffer => {
      const data = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' });
      const url = URL.createObjectURL(data);
      // 创建一个a标签模拟点击进行下载
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', `${name}.xlsx`);
      document.body.appendChild(link);
      link.click();
    });
}

// 监听元素宽高变化，并执行fun函数 dom元素 / fun 回调函数
export function domResize(dom,fun){
  const resizeObserver = new ResizeObserver(entries => {
    // for (let entry of entries) {
    //   const { width, height } = entry.contentRect;
    //   console.log('div宽度变为：', width);
    //   // 在这里可以执行相关操作
    // }
    fun()
  });
   
  resizeObserver.observe(dom);
}